home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1997 January: Mac OS SDK / Dev.CD Jan 97 SDK1.toast / Development Kits (Disc 1) / Interfaces&Libraries / Interfaces / AIncludes / CodeFragments.a < prev    next >
Encoding:
Text File  |  1996-01-24  |  9.2 KB  |  300 lines  |  [TEXT/MPS ]

  1. ;
  2. ;    File:        CodeFragments.a
  3. ;
  4. ;    Contains:    Code Fragment Manager Interfaces.
  5. ;
  6. ;    Version:    Technology:    System 7.5
  7. ;                Package:    Universal Interfaces 2.2 in “MPW” on ETO #20
  8. ;
  9. ;    Copyright:    © 1984-1995 by Apple Computer, Inc.
  10. ;                All rights reserved.
  11. ;
  12. ;    Bugs?:        If you find a problem with this file, use the Apple Bug Reporter
  13. ;                stack.  Include the file and version information (from above)
  14. ;                in the problem description and send to:
  15. ;                    Internet:    apple.bugs@applelink.apple.com
  16. ;                    AppleLink:    APPLE.BUGS
  17. ;
  18. ;
  19.  
  20.     IF &TYPE('__CODEFRAGMENTS__') = 'UNDEFINED' THEN
  21. __CODEFRAGMENTS__ SET 1
  22.  
  23.  
  24.     IF &TYPE('__TYPES__') = 'UNDEFINED' THEN
  25.     include 'Types.a'
  26.     ENDIF
  27. ;        include 'ConditionalMacros.a'                                ;
  28.  
  29.     IF &TYPE('__FILES__') = 'UNDEFINED' THEN
  30.     include 'Files.a'
  31.     ENDIF
  32. ;        include 'MixedMode.a'                                        ;
  33. ;        include 'OSUtils.a'                                        ;
  34. ;            include 'Memory.a'                                        ;
  35. ;        include 'Finder.a'                                            ;
  36.  
  37. kCFragResourceType                EQU        'cfrg'
  38. kCFragResourceID                EQU        0
  39. kCFragLibraryFileType            EQU        'shlb'
  40.  
  41. ; typedef OSType             CFragArchitecture
  42.  
  43. kPowerPCCFragArch                EQU        'pwpc'
  44. kMotorola68KCFragArch            EQU        'm68k'
  45. kAnyCFragArch                    EQU        $3F3F3F3F
  46.  
  47.     IF GENERATINGPOWERPC  THEN
  48. kCurrentCFragArch                EQU        kPowerPCCFragArch
  49.  
  50.     ENDIF
  51.     IF GENERATING68K  THEN
  52. kCurrentCFragArch                EQU        kMotorola68KCFragArch
  53.  
  54.     ENDIF
  55. ; typedef UInt32             CFragConnectionID
  56. ; typedef UInt32             CFragClosureID
  57. ; typedef UInt32             CFragContextID
  58. ; typedef UInt32             CFragContainerID
  59. ; typedef UInt32             CFragLoadOptions
  60.  
  61. kLoadCFrag                        EQU        $01                    ; Try to use existing copy, load if not found.
  62. kFindCFrag                        EQU        $02                    ; Try find an existing copy, don't load if not found.
  63. kNewCFragCopy                    EQU        $05                    ; Load a new copy whether one already exists or not.
  64. kInplaceCFrag                    EQU        $80                    ; Use data sections directly in the container.
  65.  
  66. kUnresolvedCFragSymbolAddress    EQU        0
  67.  
  68. ; typedef UInt8             CFragSymbolClass
  69.  
  70. kCodeCFragSymbol                EQU        0
  71. kDataCFragSymbol                EQU        1
  72. kTVectorCFragSymbol                EQU        2
  73. kTOCCFragSymbol                    EQU        3
  74. kGlueCFragSymbol                EQU        4
  75.  
  76. ; typedef UInt8             CFragUsage
  77.  
  78. kImportLibraryCFrag                EQU        0                    ; Standard CFM import library.
  79. kApplicationCFrag                EQU        1                    ; Macintosh application.
  80. kDropInAdditionCFrag            EQU        2                    ; Private extension to an application or library.
  81.  
  82. kIsCompleteCFrag                EQU        0                    ; A "base" fragment, not an update.
  83. kFirstCFragUpdate                EQU        1                    ; The first update, others are numbered 2, 3, ...
  84.  
  85. ; typedef UInt8             CFragLocatorKind
  86.  
  87. kMemoryCFragLocator                EQU        0                    ; Container is already addressable.
  88. kDataForkCFragLocator            EQU        1                    ; Container is in a file's data fork.
  89. kResourceCFragLocator            EQU        2                    ; Container is in a file's resource fork.
  90. kByteStreamCFragLocator            EQU        3                    ; Container is in a given file fork as a byte stream.
  91.  
  92. kCFragGoesToEOF                    EQU        0
  93.  
  94. CFragOldMemoryLocator     RECORD    0
  95. address                     ds.l   1        ; offset: $0 (0)
  96. length                     ds.l   1        ; offset: $4 (4)
  97. inPlace                     ds.b   1        ; offset: $8 (8)
  98. reserved3a                 ds.b   3        ; offset: $9 (9)        ; ! Do not use this!
  99. sizeof                     EQU *            ; size:   $C (12)
  100.                         ENDR
  101.  
  102. ; typedef struct CFragOldMemoryLocator  CFragOldMemoryLocator
  103. CFragHFSDiskFlatLocator RECORD    0
  104. fileSpec                 ds.l   1        ; offset: $0 (0)
  105. offset                     ds.l   1        ; offset: $4 (4)
  106. length                     ds.l   1        ; offset: $8 (8)
  107. sizeof                     EQU *            ; size:   $C (12)
  108.                         ENDR
  109.  
  110. ; typedef struct CFragHFSDiskFlatLocator  CFragHFSDiskFlatLocator
  111. ; ! This must have a file specification at the same offset as a data fork locator!
  112. CFragHFSSegmentedLocator RECORD    0
  113. fileSpec                 ds.l   1        ; offset: $0 (0)
  114. rsrcType                 ds.l   1        ; offset: $4 (4)
  115. rsrcID                     ds.w   1        ; offset: $8 (8)
  116. reserved2a                 ds.w   1        ; offset: $A (10)        ; ! Do not use this!
  117. sizeof                     EQU *            ; size:   $C (12)
  118.                         ENDR
  119.  
  120. ; typedef struct CFragHFSSegmentedLocator  CFragHFSSegmentedLocator
  121. CFragHFSLocator         RECORD    0
  122. where                     ds.l   1        ; offset: $0 (0)        ; Really of type CFragLocatorKind.
  123. onDisk                     ds     CFragHFSDiskFlatLocator ; offset: $4 (4) ; First so debugger shows this form.
  124.                          ORG 4
  125. inMem                     ds.l   3        ; offset: $4 (4)
  126.                          ORG 4
  127. inSegs                     ds.l   3        ; offset: $4 (4)
  128.                          ORG 16
  129. sizeof                     EQU *            ; size:   $10 (16)
  130.                         ENDR
  131.  
  132. ; typedef struct CFragHFSLocator  CFragHFSLocator
  133. ; typedef CFragHFSLocator     *CFragHFSLocatorPtr
  134. ; -------------------------------------------------------------------------------------------
  135. ; The parameter block passed to fragment initialization functions.  The locator and name
  136. ; pointers are valid only for the duration of the initialization routine.  I.e. if you want
  137. ; to save the locator or name, save the contents, not the pointers.  Initialization routines
  138. ; take one parameter, a pointer to the parameter block, and return a success/failure result.
  139. ; ! Note that the initialization function returns an OSErr.  Any result other than noErr will
  140. ; ! cause the entire load to be aborted at that point.
  141. CFragInitBlock             RECORD    0
  142. contextID                 ds.l   1        ; offset: $0 (0)
  143. closureID                 ds.l   1        ; offset: $4 (4)
  144. connectionID             ds.l   1        ; offset: $8 (8)
  145. fragLocator                 ds.l   4        ; offset: $C (12)
  146. libName                     ds.l   1        ; offset: $1C (28)
  147. reserved4a                 ds.l   1        ; offset: $20 (32)        ; ! Do not use this!
  148. reserved4b                 ds.l   1        ; offset: $24 (36)        ; ! Do not use this!
  149. reserved4c                 ds.l   1        ; offset: $28 (40)        ; ! Do not use this!
  150. reserved4d                 ds.l   1        ; offset: $2C (44)        ; ! Do not use this!
  151. sizeof                     EQU *            ; size:   $30 (48)
  152.                         ENDR
  153.  
  154. ; typedef struct CFragInitBlock  CFragInitBlock
  155. ; typedef CFragInitBlock     *CFragInitBlockPtr
  156. ; typedef CFragInitFunction  *CFragInitFunctionPtr
  157. ; typedef CFragTermRoutine     *CFragTermRoutinePtr
  158. ; §
  159. ; ===========================================================================================
  160. ; Routines
  161. ; ========
  162. ;
  163. ; pascal OSErr GetSharedLibrary(ConstStr63Param libName, OSType archType, CFragLoadOptions loadFlags, CFragConnectionID *connID, Ptr *mainAddr, Str255 errMessage)
  164. ;
  165.     IF ¬ GENERATINGCFM THEN
  166.         Macro
  167.         _GetSharedLibrary
  168.             move.w    #$0001,-(sp)
  169.             dc.w     $AA5A
  170.         EndM
  171.     ELSE
  172.         IMPORT_CFM_FUNCTION    GetSharedLibrary
  173.     ENDIF
  174.  
  175. ;
  176. ; pascal OSErr GetDiskFragment(const FSSpec *fileSpec, UInt32 offset, UInt32 length, ConstStr63Param fragName, CFragLoadOptions loadFlags, CFragConnectionID *connID, Ptr *mainAddr, Str255 errMessage)
  177. ;
  178.     IF ¬ GENERATINGCFM THEN
  179.         Macro
  180.         _GetDiskFragment
  181.             move.w    #$0002,-(sp)
  182.             dc.w     $AA5A
  183.         EndM
  184.     ELSE
  185.         IMPORT_CFM_FUNCTION    GetDiskFragment
  186.     ENDIF
  187.  
  188. ;
  189. ; pascal OSErr GetMemFragment(void *memAddr, UInt32 length, ConstStr63Param fragName, CFragLoadOptions loadFlags, CFragConnectionID *connID, Ptr *mainAddr, Str255 errMessage)
  190. ;
  191.     IF ¬ GENERATINGCFM THEN
  192.         Macro
  193.         _GetMemFragment
  194.             move.w    #$0003,-(sp)
  195.             dc.w     $AA5A
  196.         EndM
  197.     ELSE
  198.         IMPORT_CFM_FUNCTION    GetMemFragment
  199.     ENDIF
  200.  
  201. ;
  202. ; pascal OSErr CloseConnection(CFragConnectionID *connID)
  203. ;
  204.     IF ¬ GENERATINGCFM THEN
  205.         Macro
  206.         _CloseConnection
  207.             move.w    #$0004,-(sp)
  208.             dc.w     $AA5A
  209.         EndM
  210.     ELSE
  211.         IMPORT_CFM_FUNCTION    CloseConnection
  212.     ENDIF
  213.  
  214. ;
  215. ; pascal OSErr FindSymbol(CFragConnectionID connID, ConstStr255Param symName, Ptr *symAddr, CFragSymbolClass *symClass)
  216. ;
  217.     IF ¬ GENERATINGCFM THEN
  218.         Macro
  219.         _FindSymbol
  220.             move.w    #$0005,-(sp)
  221.             dc.w     $AA5A
  222.         EndM
  223.     ELSE
  224.         IMPORT_CFM_FUNCTION    FindSymbol
  225.     ENDIF
  226.  
  227. ;
  228. ; pascal OSErr CountSymbols(CFragConnectionID connID, long *symCount)
  229. ;
  230.     IF ¬ GENERATINGCFM THEN
  231.         Macro
  232.         _CountSymbols
  233.             move.w    #$0006,-(sp)
  234.             dc.w     $AA5A
  235.         EndM
  236.     ELSE
  237.         IMPORT_CFM_FUNCTION    CountSymbols
  238.     ENDIF
  239.  
  240. ;
  241. ; pascal OSErr GetIndSymbol(CFragConnectionID connID, long symIndex, Str255 symName, Ptr *symAddr, CFragSymbolClass *symClass)
  242. ;
  243.     IF ¬ GENERATINGCFM THEN
  244.         Macro
  245.         _GetIndSymbol
  246.             move.w    #$0007,-(sp)
  247.             dc.w     $AA5A
  248.         EndM
  249.     ELSE
  250.         IMPORT_CFM_FUNCTION    GetIndSymbol
  251.     ENDIF
  252.  
  253.     IF OLDROUTINENAMES  THEN
  254. ; typedef CFragConnectionID  ConnectionID
  255. ; typedef CFragLoadOptions     LoadFlags
  256. ; typedef CFragSymbolClass     SymClass
  257. ; typedef CFragOldMemoryLocator  MemFragment
  258. ; typedef CFragHFSDiskFlatLocator  DiskFragment
  259. ; typedef CFragHFSSegmentedLocator  SegmentedFragment
  260. ; typedef CFragHFSLocator     FragmentLocator
  261. ; typedef CFragHFSLocatorPtr  FragmentLocatorPtr
  262. ; typedef CFragInitBlock     InitBlock
  263. ; typedef CFragInitBlockPtr  InitBlockPtr
  264. ; typedef CFragInitFunction  ConnectionInitializationRoutine
  265. ; typedef CFragTermRoutine     ConnectionTerminationRoutine
  266.  
  267. kPowerPCArch                    EQU        kPowerPCCFragArch
  268. kMotorola68KArch                EQU        kMotorola68KCFragArch
  269. kAnyArchType                    EQU        kAnyCFragArch
  270. kNoLibName                        EQU        0
  271. kNoConnectionID                    EQU        0
  272. kLoadLib                        EQU        kLoadCFrag
  273. kFindLib                        EQU        kFindCFrag
  274. kLoadNewCopy                    EQU        kNewCFragCopy
  275. kUseInPlace                        EQU        kInplaceCFrag
  276. kCodeSym                        EQU        kCodeCFragSymbol
  277. kDataSym                        EQU        kDataCFragSymbol
  278. kTVectSym                        EQU        kTVectorCFragSymbol
  279. kTOCSym                            EQU        kTOCCFragSymbol
  280. kGlueSym                        EQU        kGlueCFragSymbol
  281. kInMem                            EQU        kMemoryCFragLocator
  282. kOnDiskFlat                        EQU        kDataForkCFragLocator
  283. kOnDiskSegmented                EQU        kResourceCFragLocator
  284. kIsLib                            EQU        kImportLibraryCFrag
  285. kIsApp                            EQU        kApplicationCFrag
  286. kIsDropIn                        EQU        kDropInAdditionCFrag
  287. kFullLib                        EQU        kIsCompleteCFrag
  288. kUpdateLib                        EQU        kFirstCFragUpdate
  289. kWholeFork                        EQU        kCFragGoesToEOF
  290. kCFMRsrcType                    EQU        kCFragResourceType
  291. kCFMRsrcID                        EQU        kCFragResourceID
  292. kSHLBFileType                    EQU        kCFragLibraryFileType
  293. kUnresolvedSymbolAddress        EQU        kUnresolvedCFragSymbolAddress
  294.  
  295. kPowerPC                        EQU        kPowerPCCFragArch
  296. kMotorola68K                    EQU        kMotorola68KCFragArch
  297.  
  298.     ENDIF
  299.     ENDIF ; __CODEFRAGMENTS__
  300.